/**
 * new Map
 */

let map = new Map()
var o = {name: '波仔'};

// set, get，size
map.set(o, '嗯嗯')
map.set('scode', '100')

console.log(map.get(o))
console.log(map.size)

// has
console.log(map.has(o)) // true

// [...map]
console.log([...map]) // [ [ { name: '波仔' }, '嗯嗯' ], [ 'scode', '100' ] ]

// delete
map.delete(o)
console.log(map.get(o)) // undefined

// clear
console.log(map) // Map { 'scode' => '100' }
map.clear()
console.log(map) // Map {}

/**
 * 和set一样，具有一下遍历方法
 *      Map.prototype.keys()：返回键名的遍历器。
 *      Map.prototype.values()：返回键值的遍历器。
 *      Map.prototype.entries()：返回所有成员的遍历器。
 *      这三个方法，往往会结合for of来使用
 * 
 *      Map.prototype.forEach()：遍历 Map 的所有成员。
 */



// 利用map去重
let myArray = [1, 2, 3, 4, 5, 2, 1];
function getArray(array) {
  let newArray = [];
  let map = new Map();
  for (let i = 0, l = array.length; i < l; i++) {
    if (typeof map.get(array[i]) == "undefined") {
      map.set(array[i], array[i]);
      newArray.push(array[i]);
    }
  }
  return newArray;
}
console.warn(getArray(myArray));